This document is stand-alone interactive dashboard viewable from most modern Internet browsers. The dashboard is meant to be a high-level summary of an rFreight scenario. All of the data, charts, and maps viewable in this dashboard are embedded directly into the HTML file, so users are encouraged to share their scenario results with others via this document. An Internet connection is necessary for the best user experience, but is not required.
Users may navigate to different areas of the dashboard using the navigation bar at the top of the page, and may interact directly with most tables, charts, and maps.
This document is best viewed using the most recent versions of the following web browsers:
---
title: "CMAP Dashboard"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: scroll
theme: yeti
source_code: embed
css: "CMAPDashboard.css"
---
```{r loadPackages,echo=FALSE}
loadPackages <- function (packages, lib = NULL, suppressMessages = TRUE, suppressWarnings = FALSE)
{
notinstalled <- packages[!packages %in% .packages(all.available = TRUE,
lib.loc = lib)]
if (length(notinstalled) > 0)
install.packages(notinstalled, repos = "http://cran.r-project.org",
dependencies = TRUE, lib = lib)
for (package in packages) {
library.expression <- paste0("library(", package, ", lib = lib)")
if (suppressMessages)
library.expression <- paste0("suppressMessages(",
library.expression, ")")
if (suppressWarnings)
library.expression <- paste0("suppressWarnings(",
library.expression, ")")
eval(parse(text = library.expression))
}
invisible(TRUE)
}
SYSTEM_REPORT_PKGS <- c("DT", "flexdashboard", "leaflet", "geojsonio", "htmltools", "htmlwidgets",
"knitr", "mapview", "plotly", "RColorBrewer", "rgdal", "rgeos",
"rmarkdown", "scales", "stringr", "jsonlite", "pander","RSGFAF","data.table","circlize","formattable")
SYSTEM_APP_PATH <- getwd()
loadPackages(SYSTEM_REPORT_PKGS)
```
```{r Setup}
opts_knit$set(root.dir = SYSTEM_APP_PATH)
```
```{r Common_Values}
# Mapping of States to Regions & Subregions
stateRegion <- data.table(State = c("Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming","District of Columbia"),
Region = c("South","West","West","South","West","West","NorthEast","South","South","South","West","West","MidWest","MidWest","MidWest","MidWest","South","South","NorthEast","South","NorthEast","MidWest","MidWest","South","MidWest","West","MidWest","West","NorthEast","NorthEast","West","NorthEast","South","MidWest","MidWest","South","West","NorthEast","NorthEast","South","MidWest","South","South","West","NorthEast","South","West","South","MidWest","West","South"),
SubRegion=c("East South Central","Pacific","Mountain","West South Central","Pacific","Mountain","New England","South Atlantic","South Atlantic","South Atlantic","Pacific","Mountain","East North Central","East North Central","West North Central","West North Central","East South Central","West South Central","New England","South Atlantic","New England","East North Central","West North Central","East South Central","West North Central","Mountain","West North Central","Mountain","New England","Middle Atlantic","Mountain","Middle Atlantic","South Atlantic","West North Central","East North Central","West South Central","Pacific","Middle Atlantic","New England","South Atlantic","West North Central","East South Central","West South Central","Mountain","New England","South Atlantic","Pacific","South Atlantic","East North Central","Mountain","South Atlantic"),stringsAsFactors = FALSE, key = "State")
```
```{r ggplot_Theme}
theme_db <- theme_bw() + theme(plot.margin = unit(c(10,10,20,10),"pt")) + theme(strip.background = element_rect(fill = "white")) # this should eventually be replaced with an RSG theme, which can be substituted for client themes in conjunction with the dashboard's css file in the YAML header
```
Overview
============================================
Summary {data-width=200}
--------------------------------------------
### About this Document
This document is stand-alone interactive dashboard viewable from most modern Internet browsers. The dashboard is meant to be a high-level summary of an __rFreight__ scenario. All of the data, charts, and maps viewable in this dashboard are embedded directly into the HTML file, so users are encouraged to share their scenario results with others via this document. An Internet connection is necessary for the best user experience, but is not required.
Users may navigate to different areas of the dashboard using the navigation bar at the top of the page, and may interact directly with most tables, charts, and maps.
This document is best viewed using the most recent versions of the following web browsers:
* [Google Chrome](https://www.google.com/chrome/browser/desktop/)
* [Mozilla Firefox](https://www.mozilla.org/en-US/firefox/new/)
* [Microsoft Internet Explorer](https://www.microsoft.com/en-us/download/internet-explorer.aspx)
Highlights {data-width=150}
--------------------------------------------
### Run Date
```{r Run_Date_ValueBox}
valueBox(Sys.Date(), "Model Run Date", icon = "fa-calendar")
```
```{r setupColors, echo=FALSE}
# Setup default colors at the beginning (WIP)
rsgcolordf <- data.frame(red=c(246,0,99,186,117,255,82), green=c(139,111,175,18,190,194,77), blue=c(31,161,94,34,233,14,133), colornames=c("orange","marine","leaf","cherry","sky","sunshine","violet"))
rsgcolordf <- rsgcolordf %>% mutate(hexValue=rgb(red,green,blue,maxColorValue=255))
makeMoreColors <- colorRampPalette(rsgcolordf$hexValue) # Combines RSG colors to form more colors
modeColors <- data.table(mode=c("Truck","Rail","Water","Air","Multiple","Pipeline","Other","None"),colors=makeMoreColors(8),stringsAsFactors = FALSE,key = "mode")
modeColors2 <- makeMoreColors(8)
names(modeColors2) <- c("Truck","Rail","Water","Air","Multiple","Pipeline","Other","None")
dataColor <- makeMoreColors(2)
names(dataColor) <- c("FAF 2012","Model")
```
```{r setVariables, echo=FALSE}
selectYear <- 2012 # For filtering years in future
CMAPFAFCodes <- c(171,181)
lbstoTons <- 0.0005 # Convert from lbs to tons
# Load MesoZone to FAF zone mapping
mesoFAFCBPMap <- fread("meso_faf_map.csv")
setkey(mesoFAFCBPMap,MESOZONE)
# Load mode mapping
modeCategories <- fread("mode_description.csv",stringsAsFactors = FALSE)
setkey(modeCategories,ModeNumber)
```
```{r loadData, echo=FALSE, warning=FALSE,include=FALSE}
# Load observed data and model data in this section
#####################################################################
######## Observed Data ##############################################
#####################################################################
Flows <- suppressWarnings(getFAFData(year = selectYear))
## Note: Observed that some tonmiles are 0 while tons are greater than 0.
Flows[Origin.Domestic==Destination.Domestic,Move.Type:="Within Zones"]
Flows[Origin.Domestic!=Destination.Domestic,Move.Type:="Between Zones"]
# Flows[,':='(Move.Type=ifelse(Origin.Domestic==Destination.Domestic,"Within Zones","Between Zones"))]
Flows[,':='(Origin.Region=stateRegion[.(Origin.State),Region],
Origin.SubRegion=stateRegion[.(Origin.State),SubRegion],
Destination.Region=stateRegion[.(Destination.State),Region],
Destination.SubRegion=stateRegion[.(Destination.State),SubRegion])]
CMAPFlows <- Flows[Origin.Domestic %in% CMAPFAFCodes | Destination.Domestic %in% CMAPFAFCodes]
CMAPFlows[Origin.Domestic %in% CMAPFAFCodes & Destination.Domestic %in% CMAPFAFCodes,Move.Type:="Within"]
CMAPFlows[Origin.Domestic %in% CMAPFAFCodes & !(Destination.Domestic %in% CMAPFAFCodes), Move.Type:="Out"]
CMAPFlows[!(Origin.Domestic %in% CMAPFAFCodes) & Destination.Domestic %in% CMAPFAFCodes, Move.Type:="In"]
# CMAPFlows[,':='(Move.Type=ifelse(Origin.Domestic %in% CMAPFAFCodes & Destination.Domestic %in% CMAPFAFCodes,"Within",ifelse(Origin.Domestic %in% CMAPFAFCodes, "Out","In")))]
CMAPFlows[Origin.Domestic %in% CMAPFAFCodes, Origin.Region:="CMAP"]
CMAPFlows[Origin.Domestic %in% CMAPFAFCodes, Origin.SubRegion:="CMAP"]
CMAPFlows[Destination.Domestic %in% CMAPFAFCodes, Destination.Region:="CMAP"]
CMAPFlows[Destination.Domestic %in% CMAPFAFCodes, Destination.SubRegion:="CMAP"]
# CMAPFlows[,':='(Origin.Region=ifelse(Origin.Domestic %in% CMAPFAFCodes,"CMAP",Origin.Region),
# Origin.SubRegion=ifelse(Origin.Domestic %in% CMAPFAFCodes,"CMAP",Origin.SubRegion),
# Destination.Region=ifelse(Destination.Domestic %in% CMAPFAFCodes,"CMAP",Destination.Region),
# Destination.SubRegion=ifelse(Destination.Domestic %in% CMAPFAFCodes,"CMAP",Destination.SubRegion))]
#####################################################################
######## Model Data ##############################################
#####################################################################
FAFZonescurrentVersion <- FAFZones[Version==getLatestFAFVersion()]
FAFZonescurrentVersion[,Version:=NULL]
FAFZonescurrentVersion[,State:=as.character(State)]
setkey(FAFZonescurrentVersion,FAFZone)
file_location <- "../scenarios/base/old_outputs/pairs.Rdata"
# Check if it's an old file
isOld <- ifelse(grepl("old",file_location),TRUE,FALSE)
ModelFlows <- get(load(file_location))
# To match the with the older version
# if(isOld){setnames(ModelFlows,old=c("pzone","czone","SCTG"),new = c("Production_zone","Consumption_zone","Commodity_SCTG"))}
# rm(pairs)
# gcgit ()
ModelFlows[, Tons := Last.Iteration.Quantity * lbstoTons]
ModelFlows[, Tonmiles := Tons * Distance]
ModelFlows[, Value := Last.Iteration.Quantity * ConVal / PurchaseAmountTons]
ModelFlows[Production_zone <= 273 & Consumption_zone <= 273, Trade.Type := "Domestic"]
ModelFlows[Production_zone > 273 & Consumption_zone <= 273, Trade.Type := "Import"]
ModelFlows[Production_zone <= 273 & Consumption_zone > 273, Trade.Type := "Export"]
# Assign FAF zones to origin and destination
ModelFlows[Trade.Type!="Import",Origin.Domestic:=mesoFAFCBPMap[.(Production_zone),FAFZONE]]
ModelFlows[Trade.Type=="Import",Origin.Foreign:=mesoFAFCBPMap[.(Production_zone),FAFZONE]]
ModelFlows[Trade.Type!="Export",Destination.Domestic:=mesoFAFCBPMap[.(Consumption_zone),FAFZONE]]
ModelFlows[Trade.Type=="Export",Destination.Foreign:=mesoFAFCBPMap[.(Consumption_zone),FAFZONE]]
# ModelFlows[,":="(Origin.Domestic=ifelse(Trade.Type!="Import",mesoFAFCBPMap[.(Production_zone),FAFZONE],NA),
# Origin.Foreign=ifelse(Trade.Type=="Import",mesoFAFCBPMap[.(Production_zone),FAFZONE],NA),
# Destination.Domestic=ifelse(Trade.Type!="Export",mesoFAFCBPMap[.(Consumption_zone),FAFZONE],NA),
# Destination.Foreign=ifelse(Trade.Type=="Export",mesoFAFCBPMap[.(Consumption_zone),FAFZONE],NA))]
##############################################################
# Assign states to origin and destination
##############################################################
ModelFlows[Trade.Type!="Import",Origin.State:=FAFZonescurrentVersion[.(Origin.Domestic),State]]
ModelFlows[Trade.Type!="Export",Destination.State:=FAFZonescurrentVersion[.(Destination.Domestic),State]]
# ModelFlows[,":="(Origin.State=ifelse(Trade.Type!="Import",FAFZonescurrentVersion[.(Origin.Domestic),State],NA),Destination.State=ifelse(Trade.Type!="Export",FAFZonescurrentVersion[.(Destination.Domestic),State],NA))]
ModelFlows[,':='(Origin.Region=stateRegion[.(Origin.State),Region],
Origin.SubRegion=stateRegion[.(Origin.State),SubRegion],
Destination.Region=stateRegion[.(Destination.State),Region],
Destination.SubRegion=stateRegion[.(Destination.State),SubRegion])]
ModelFlows[Trade.Type=="Domestic",Mode.Domestic:=modeCategories[.(MinPath),Mode]]
# ModelFlows[,Mode.Domestic:=ifelse(Trade.Type=="Domestic",modeCategories[.(MinPath),Mode],NA)]
ModelCMAPFlows <- ModelFlows[Origin.Domestic %in% CMAPFAFCodes | Destination.Domestic %in% CMAPFAFCodes]
ModelCMAPFlows[Origin.Domestic %in% CMAPFAFCodes & Destination.Domestic %in% CMAPFAFCodes,Move.Type:="Within"]
ModelCMAPFlows[Origin.Domestic %in% CMAPFAFCodes & !(Destination.Domestic %in% CMAPFAFCodes), Move.Type:="Out"]
ModelCMAPFlows[!(Origin.Domestic %in% CMAPFAFCodes) & Destination.Domestic %in% CMAPFAFCodes, Move.Type:="In"]
# ModelCMAPFlows[,':='(Move.Type=ifelse(Origin.Domestic %in% CMAPFAFCodes & Destination.Domestic %in% CMAPFAFCodes,"Within",ifelse(Origin.Domestic %in% CMAPFAFCodes, "Out","In")))]
ModelFlows[Origin.Domestic==Destination.Domestic,Move.Type:="Within Zones"]
ModelFlows[Origin.Domestic!=Destination.Domestic,Move.Type:="Between Zones"]
# ModelFlows[,':='(Move.Type=ifelse(Origin.Domestic==Destination.Domestic,"Within Zones","Between Zones"))]
ModelCMAPFlows[Origin.Domestic %in% CMAPFAFCodes, Origin.Region:="CMAP"]
ModelCMAPFlows[Origin.Domestic %in% CMAPFAFCodes, Origin.SubRegion:="CMAP"]
ModelCMAPFlows[Destination.Domestic %in% CMAPFAFCodes, Destination.Region:="CMAP"]
ModelCMAPFlows[Destination.Domestic %in% CMAPFAFCodes, Destination.SubRegion:="CMAP"]
# ModelCMAPFlows[,':='(Origin.Region=ifelse(Origin.Domestic %in% CMAPFAFCodes,"CMAP",Origin.Region),
# Origin.SubRegion=ifelse(Origin.Domestic %in% CMAPFAFCodes,"CMAP",Origin.SubRegion),
# Destination.Region=ifelse(Destination.Domestic %in% CMAPFAFCodes,"CMAP",Destination.Region),
# Destination.SubRegion=ifelse(Destination.Domestic %in% CMAPFAFCodes,"CMAP",Destination.SubRegion))]
```
Tables {data-navmenu="CMAP" data-width=200 .tabset .tabset-fade}
==================================================================
### Tonnage
```{r createTablesCMAP, echo=FALSE}
DomesticCMAPFlows <- CMAPFlows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012"),by=.(Move.Type,Mode.Domestic)]
ModelDomesticCMAPFlows <- ModelCMAPFlows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="Model"),by=.(Move.Type,Mode.Domestic)]
DomesticCMAPFlows <- rbind(DomesticCMAPFlows,ModelDomesticCMAPFlows)
rm(ModelDomesticCMAPFlows)
DomesticCMAPFlows.T <- dcast(DomesticCMAPFlows,Mode.Domestic~Move.Type+Table,value.var = "Tonnage")
DomesticCMAPFlows.V <- dcast(DomesticCMAPFlows,Mode.Domestic~Move.Type+Table,value.var = "Value")
DomesticCMAPFlows.TM <- dcast(DomesticCMAPFlows,Mode.Domestic~Move.Type+Table,value.var = "Tonmiles")
ImpExpDomesticCMAPFlows <- CMAPFlows[Trade.Type!="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012"),by=.(Trade.Type,Move.Type,Mode.Domestic)]
###########################################################
#### Commented out until the foreign and domestic modes are decided
###########################################################
# ModelImpExpDomesticCMAPFlows <- ModelCMAPFlows[Trade.Type!="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="Model"),by=.(Trade.Type,Move.Type,Mode.Domestic)][order(Trade.Type,Move.Type,-Tonnage)]
#
# ImpExpDomesticCMAPFlows <- rbind(ImpExpDomesticCMAPFlows,ModelImpExpDomesticCMAPFlows)
# rm(ModelImpExpDomesticCMAPFlows)
ImpExpDomesticCMAPFlows.T <- dcast(ImpExpDomesticCMAPFlows,Mode.Domestic~Trade.Type+Move.Type,value.var="Tonnage")
ImpExpDomesticCMAPFlows.V <- dcast(ImpExpDomesticCMAPFlows,Mode.Domestic~Trade.Type+Move.Type,value.var="Value")
ImpExpDomesticCMAPFlows.TM <- dcast(ImpExpDomesticCMAPFlows,Mode.Domestic~Trade.Type+Move.Type,value.var="Tonmiles")
ImpExpInternationalCMAPFlows <- CMAPFlows[Trade.Type!="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012"),by=.(Trade.Type,Move.Type,Mode.Foreign)]
###########################################################
#### Commented out until the foreign and domestic modes are decided
###########################################################
# ModelImpExpDomesticCMAPFlows <- ModelCMAPFlows[Trade.Type!="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="Model"),by=.(Trade.Type,Move.Type,Mode.Foreign)][order(Trade.Type,Move.Type,-Tonnage)]
#
# ImpExpDomesticCMAPFlows <- rbind(ImpExpDomesticCMAPFlows,ModelImpExpDomesticCMAPFlows)
# rm(ModelImpExpDomesticCMAPFlows)
ImpExpInternationalCMAPFlows.T <- dcast(ImpExpInternationalCMAPFlows,Mode.Foreign~Trade.Type+Move.Type,value.var="Tonnage")
ImpExpInternationalCMAPFlows.V <- dcast(ImpExpInternationalCMAPFlows,Mode.Foreign~Trade.Type+Move.Type,value.var="Value")
ImpExpInternationalCMAPFlows.TM <- dcast(ImpExpInternationalCMAPFlows,Mode.Foreign~Trade.Type+Move.Type,value.var="Tonmiles")
TotalFlowsCMAP.T <- merge(merge(DomesticCMAPFlows.T,ImpExpDomesticCMAPFlows.T,by="Mode.Domestic"),ImpExpInternationalCMAPFlows.T,by.x="Mode.Domestic",by.y="Mode.Foreign")
TotalFlowsCMAP.V <- merge(merge(DomesticCMAPFlows.V,ImpExpDomesticCMAPFlows.V,by="Mode.Domestic"),ImpExpInternationalCMAPFlows.V,by.x="Mode.Domestic",by.y="Mode.Foreign")
TotalFlowsCMAP.TM <- merge(merge(DomesticCMAPFlows.TM,ImpExpDomesticCMAPFlows.TM,by="Mode.Domestic"),ImpExpInternationalCMAPFlows.TM,by.x="Mode.Domestic",by.y="Mode.Foreign")
countDomestic <- DomesticCMAPFlows[,.N,by=.(Move.Type,Table)]
countInternationalDomestic <- ImpExpDomesticCMAPFlows[,.N,by=.(Move.Type,Trade.Type,Table)]
countInternationalInternational <- ImpExpInternationalCMAPFlows[,.N,by=.(Move.Type,Trade.Type,Table)]
sketchCMAP <- with(tags,table(
thead(
tr(
th(colspan=1,rowspan=4,"Mode"),
th(colspan=countDomestic[,.N],rowspan=2, "Domesitc"),
th(colspan=countInternationalDomestic[,.N], "Domestic"),
th(colspan=countInternationalInternational[,.N], "International")
),
tr(
th(colspan=countInternationalDomestic[Trade.Type=="Import",.N], "Import"),
th(colspan=countInternationalDomestic[Trade.Type=="Export",.N], "Export"),
th(colspan=countInternationalInternational[Trade.Type=="Import",.N], "Import"),
th(colspan=countInternationalInternational[Trade.Type=="Export",.N], "Export")
),
tr(
if((value <- countDomestic[Move.Type=="In",.N])>0) th(colspan=value, "In"),
if((value <- countDomestic[Move.Type=="Out",.N])>0) th(colspan=value, "Out"),
if((value <- countDomestic[Move.Type=="Within",.N])>0) th(colspan=value, "Within"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="In",.N])>0) th(colspan=value, "In"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="Out",.N])>0) th(colspan=value, "Out"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="Within",.N])>0) th(colspan=value, "Within"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="In",.N])>0) th(colspan=value, "In"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="Out",.N])>0) th(colspan=value, "Out"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="Within",.N])>0) th(colspan=value, "Within"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="In",.N])>0) th(colspan=value, "In"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="Out",.N])>0) th(colspan=value, "Out"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="Within",.N])>0) th(colspan=value, "Within"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="In",.N])>0) th(colspan=value, "In"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="Out",.N])>0) th(colspan=value, "Out"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="Within",.N])>0) th(colspan=value, "Within")
),
tr(
if((value <- countDomestic[Move.Type=="In" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countDomestic[Move.Type=="In" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countDomestic[Move.Type=="Out" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countDomestic[Move.Type=="Out" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countDomestic[Move.Type=="Within" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countDomestic[Move.Type=="Within" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="In" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="In" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="Out" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="Out" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="Within" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="Within" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="In" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="In" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="Out" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="Out" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="Within" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="Within" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="In" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="In" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="Out" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="Out" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="Within" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="Within" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="In" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="In" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="Out" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="Out" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="Within" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="Within" & Table=="Model",.N])>0) th(colspan=value, "Model")
)
)))
# Function to create css style colors
createCSSColors <- function(x,min.color,max.color,...){
clrs <- gradient(x,min.color,max.color,...)
clrs <- paste("rgb(",apply(t(clrs),1,paste,collapse=","),")",sep="")
return(clrs)
}
datatable(TotalFlowsCMAP.T,container=sketchCMAP,rownames=FALSE,extensions = 'FixedColumns',
options = list(sDom = '<"top">lrt<"bottom">ip',
fixedColumns = TRUE,
autowidth = TRUE,
bPaginate = FALSE,
bFilter = FALSE,
bInfo = FALSE,
columnDefs = list(list(width = '20%')),
searching=FALSE,
paging=FALSE)) %>% formatCurrency(2:ncol(TotalFlowsCMAP.T),currency="",digits=0) %>% formatStyle(columns=2:ncol(TotalFlowsCMAP.T),backgroundColor=styleInterval(sort(unlist(TotalFlowsCMAP.T[,2:ncol(TotalFlowsCMAP.T)]))[-1],createCSSColors(sort(unlist(TotalFlowsCMAP.T[,2:ncol(TotalFlowsCMAP.T)])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")# %>% formatStyle(columns=5:10,backgroundColor=styleInterval(sort(unlist(TotalFlowsCMAP.T[,5:10]))[-1],createCSSColors(sort(unlist(TotalFlowsCMAP.T[,5:10])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center") %>% formatStyle(columns=11:16,backgroundColor=styleInterval(sort(unlist(TotalFlowsCMAP.T[,11:16]))[-1],createCSSColors(sort(unlist(TotalFlowsCMAP.T[,11:16])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")
```
### Value
```{r,echo=FALSE}
datatable(TotalFlowsCMAP.V,container=sketchCMAP,rownames=FALSE,extensions = 'FixedColumns',
options = list(sDom = '<"top">lrt<"bottom">ip',
fixedColumns = TRUE,
autowidth = TRUE,
bPaginate = FALSE,
bFilter = FALSE,
bInfo = FALSE,
columnDefs = list(list(width = '20%')),
searching=FALSE,
paging=FALSE)) %>% formatCurrency(2:ncol(TotalFlowsCMAP.V),digits=0) %>% formatStyle(columns=2:ncol(TotalFlowsCMAP.V),backgroundColor=styleInterval(sort(unlist(TotalFlowsCMAP.T[,2:ncol(TotalFlowsCMAP.V)]))[-1],createCSSColors(sort(unlist(TotalFlowsCMAP.T[,2:ncol(TotalFlowsCMAP.V)])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")# %>% formatStyle(columns=5:10,backgroundColor=styleInterval(sort(unlist(TotalFlowsCMAP.T[,5:10]))[-1],createCSSColors(sort(unlist(TotalFlowsCMAP.T[,5:10])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center") %>% formatStyle(columns=11:16,backgroundColor=styleInterval(sort(unlist(TotalFlowsCMAP.T[,11:16]))[-1],createCSSColors(sort(unlist(TotalFlowsCMAP.T[,11:16])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")
```
### Tonmiles
```{r,echo=FALSE}
datatable(TotalFlowsCMAP.TM,container=sketchCMAP,rownames=FALSE,extensions = 'FixedColumns',
options = list(sDom = '<"top">lrt<"bottom">ip',
fixedColumns = TRUE,
autowidth = TRUE,
bPaginate = FALSE,
bFilter = FALSE,
bInfo = FALSE,
columnDefs = list(list(width = '20%')),
searching=FALSE,
paging=FALSE)) %>% formatCurrency(2:ncol(TotalFlowsCMAP.TM),currency="",digits=0) %>% formatStyle(columns=2:ncol(TotalFlowsCMAP.TM),backgroundColor=styleInterval(sort(unlist(TotalFlowsCMAP.T[,2:ncol(TotalFlowsCMAP.TM)]))[-1],createCSSColors(sort(unlist(TotalFlowsCMAP.T[,2:ncol(TotalFlowsCMAP.TM)])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")# %>% formatStyle(columns=5:10,backgroundColor=styleInterval(sort(unlist(TotalFlowsCMAP.T[,5:10]))[-1],createCSSColors(sort(unlist(TotalFlowsCMAP.T[,5:10])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center") %>% formatStyle(columns=11:16,backgroundColor=styleInterval(sort(unlist(TotalFlowsCMAP.T[,11:16]))[-1],createCSSColors(sort(unlist(TotalFlowsCMAP.T[,11:16])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")
```
Tables by commodity {data-navmenu="CMAP" data-orientation=rows}
==================================================
Tonnage Table {data-height=1600 .tabset .tabset-fade}
-------------------------------------------------
### Tonnage
```{r createTablesCMAPCommodity, echo=FALSE}
# Domestic Portion
DomesticCMAPCommodityFlows <- CMAPFlows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012"),by=.(Move.Type,Mode.Domestic,SCTG)][order(Move.Type,-Tonnage)]
DomesticCMAPCommodityFlowsTotal <- CMAPFlows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Move.Type="Total",Table="FAF 2012"),by=.(Mode.Domestic,SCTG)][order(Move.Type,-Tonnage)]
DomesticCMAPCommodityFlows <- rbind(DomesticCMAPCommodityFlows,DomesticCMAPCommodityFlowsTotal)
rm(DomesticCMAPCommodityFlowsTotal)
ModelDomesticCMAPCommodityFlows <- ModelCMAPFlows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="Model"),by=.(Move.Type,Mode.Domestic,Commodity_SCTG)][order(Move.Type,-Tonnage)]
ModelDomesticCMAPCommodityFlowsTotal <- ModelCMAPFlows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Move.Type="Total",Table="Model"),by=.(Mode.Domestic,Commodity_SCTG)][order(Move.Type,-Tonnage)]
ModelDomesticCMAPCommodityFlows <- rbind(ModelDomesticCMAPCommodityFlows,ModelDomesticCMAPCommodityFlowsTotal)
rm(ModelDomesticCMAPCommodityFlowsTotal)
setnames(ModelDomesticCMAPCommodityFlows,old="Commodity_SCTG",new="SCTG")
DomesticCMAPCommodityFlows <- rbind(DomesticCMAPCommodityFlows,ModelDomesticCMAPCommodityFlows)
rm(ModelDomesticCMAPCommodityFlows)
DomesticCMAPCommodityFlows.T <- dcast(DomesticCMAPCommodityFlows[Move.Type!="Total"],SCTG~Mode.Domestic+Move.Type+Table,value.var = "Tonnage")
DomesticCMAPCommodityFlows.V <- dcast(DomesticCMAPCommodityFlows[Move.Type!="Total"],SCTG~Mode.Domestic+Move.Type+Table,value.var = "Value")
DomesticCMAPCommodityFlows.TM <- dcast(DomesticCMAPCommodityFlows[Move.Type!="Total"],SCTG~Mode.Domestic+Move.Type+Table,value.var = "Tonmiles")
# Domestic Portion of International Trade
ImpExpDomesticCMAPCommodityFlows <- CMAPFlows[Trade.Type!="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012"),by=.(Trade.Type,Move.Type,Mode.Domestic,SCTG)][order(Trade.Type,Move.Type,-Tonnage)]
ImpExpDomesticCMAPCommodityFlowsTotal <- CMAPFlows[Trade.Type!="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012",Move.Type="Total"),by=.(Trade.Type,Mode.Domestic,SCTG)][order(Trade.Type,Move.Type,-Tonnage)]
ImpExpDomesticCMAPCommodityFlows <- rbind(ImpExpDomesticCMAPCommodityFlows,ImpExpDomesticCMAPCommodityFlowsTotal)
rm(ImpExpDomesticCMAPCommodityFlowsTotal)
ImpExpDomesticCMAPCommodityFlows.T <- dcast(ImpExpDomesticCMAPCommodityFlows[Move.Type=="Total"],SCTG~Mode.Domestic+Table+Trade.Type+Move.Type,value.var = "Tonnage")
ImpExpDomesticCMAPCommodityFlows.V <- dcast(ImpExpDomesticCMAPCommodityFlows[Move.Type=="Total"],SCTG~Mode.Domestic+Table+Trade.Type+Move.Type,value.var = "Value")
ImpExpDomesticCMAPCommodityFlows.TM <- dcast(ImpExpDomesticCMAPCommodityFlows[Move.Type=="Total"],SCTG~Mode.Domestic+Table+Trade.Type+Move.Type,value.var = "Tonmiles")
# Foreign portion of International Trade
ImpExpInternationalCMAPCommodityFlows <- CMAPFlows[Trade.Type!="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012"),by=.(Trade.Type,Move.Type,Mode.Foreign,SCTG)][order(Trade.Type,Move.Type,-Tonnage)]
ImpExpInternationalCMAPCommodityFlowsTotal <- CMAPFlows[Trade.Type!="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012",Move.Type="Total"),by=.(Trade.Type,Mode.Foreign,SCTG)][order(Trade.Type,Move.Type,-Tonnage)]
ImpExpInternationalCMAPCommodityFlows <- rbind(ImpExpInternationalCMAPCommodityFlows,ImpExpInternationalCMAPCommodityFlowsTotal)
rm(ImpExpInternationalCMAPCommodityFlowsTotal)
ImpExpInternationalCMAPCommodityFlows.T <- dcast(ImpExpInternationalCMAPCommodityFlows[Move.Type=="Total"],SCTG~Mode.Foreign+Table+Trade.Type+Move.Type,value.var = "Tonnage")
ImpExpInternationalCMAPCommodityFlows.V <- dcast(ImpExpInternationalCMAPCommodityFlows[Move.Type=="Total"],SCTG~Mode.Foreign+Table+Trade.Type+Move.Type,value.var = "Value")
ImpExpInternationalCMAPCommodityFlows.TM <- dcast(ImpExpInternationalCMAPCommodityFlows[Move.Type=="Total"],SCTG~Mode.Foreign+Table+Trade.Type+Move.Type,value.var = "Tonmiles")
countMode <- DomesticCMAPCommodityFlows[Move.Type!="Total",.N,by=.(Mode.Domestic,Move.Type,Table)]
sketchDomesticCMAPCommodity <- with(tags,table(
thead(
tr(
th(colspan=1,rowspan=3,"SCTG"),
if ((value <- countMode[Mode.Domestic=="Truck",.N]) > 0) th(colspan = value,"Truck"),
if ((value <- countMode[Mode.Domestic=="Rail",.N]) > 0) th(colspan= value,"Rail"),
if ((value <- countMode[Mode.Domestic=="Water",.N]) > 0) th(colspan= value,"Water"),
if ((value <- countMode[Mode.Domestic=="Air",.N]) > 0) th(colspan= value,"Air"),
if ((value <- countMode[Mode.Domestic=="Multiple",.N]) > 0) th(colspan= value,"Multiple"),
if ((value <- countMode[Mode.Domestic=="Pipeline",.N]) > 0) th(colspan= value,"Pipeline")
),
tr(
if ((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="In",.N]) > 0) th(colspan=value,"In"),
if ((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="Out",.N]) > 0) th(colspan=value,"Out"),
if ((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="Within",.N]) > 0) th(colspan=value,"Within"),
if ((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="In",.N]) > 0) th(colspan=value,"In"),
if ((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="Out",.N]) > 0) th(colspan=value,"Out"),
if ((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="Within",.N]) > 0) th(colspan=value,"Within"),
if ((value <- countMode[Mode.Domestic=="Water"&Move.Type=="In",.N]) > 0) th(colspan=value,"In"),
if ((value <- countMode[Mode.Domestic=="Water"&Move.Type=="Out",.N]) > 0) th(colspan=value,"Out"),
if ((value <- countMode[Mode.Domestic=="Water"&Move.Type=="Within",.N]) > 0) th(colspan=value,"Within"),
if ((value <- countMode[Mode.Domestic=="Air"&Move.Type=="In",.N]) > 0)th(colspan=value,"In"),
if ((value <- countMode[Mode.Domestic=="Air"&Move.Type=="Out",.N]) > 0)th(colspan=value,"Out"),
if ((value <- countMode[Mode.Domestic=="Air"&Move.Type=="Within",.N]) > 0)th(colspan=value,"Within"),
if ((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="In",.N]) > 0) th(colspan=value,"In"),
if ((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="Out",.N]) > 0) th(colspan=value,"Out"),
if ((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="Within",.N]) > 0) th(colspan=value,"Within"),
if ((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="In",.N]) > 0) th(colspan=value,"In"),
if ((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="Out",.N]) > 0) th(colspan=value,"Out"),
if ((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="Within",.N]) > 0) th(colspan=value,"Within")
),
tr(
if ((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="In"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="In"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="Out"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="Out"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="Within"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="Within"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="In"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="In"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="Out"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="Out"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="Within"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="Within"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Water"&Move.Type=="In"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Water"&Move.Type=="In"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Water"&Move.Type=="Out"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Water"&Move.Type=="Out"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Water"&Move.Type=="Within"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Water"&Move.Type=="Within"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Air"&Move.Type=="In"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Air"&Move.Type=="In"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Air"&Move.Type=="Out"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Air"&Move.Type=="Out"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Air"&Move.Type=="Within"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Air"&Move.Type=="Within"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="In"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="In"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="Out"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="Out"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="Within"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="Within"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="In"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="In"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="Out"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="Out"&Table=="Model",.N]) > 0) th(colspan=value,"Model"),
if ((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="Within"&Table=="FAF 2012",.N]) > 0) th(colspan=value,"FAF 2012"),
if ((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="Within"&Table=="Model",.N]) > 0) th(colspan=value,"Model")
)
)))
datatable(DomesticCMAPCommodityFlows.T,container=sketchDomesticCMAPCommodity,rownames=FALSE,extensions = 'FixedColumns',
options = list(sDom = '<"top">lrt<"bottom">ip',
fixedColumns = TRUE,
autowidth = TRUE,
bPaginate = FALSE,
bFilter = FALSE,
bInfo = FALSE,
columnDefs = list(list(width = '20%')),
searching=FALSE,
paging=FALSE)) %>% formatCurrency(2:ncol(DomesticCMAPCommodityFlows.T),currency="",digits=0) %>% formatStyle(columns=2:ncol(DomesticCMAPCommodityFlows.T),backgroundColor=styleInterval(sort(unlist(DomesticCMAPCommodityFlows.T[,2:ncol(DomesticCMAPCommodityFlows.T)]))[-1],createCSSColors(sort(unlist(DomesticCMAPCommodityFlows.T[,2:ncol(DomesticCMAPCommodityFlows.T)])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")
```
### Value
```{r,echo=FALSE}
datatable(DomesticCMAPCommodityFlows.V,container=sketchDomesticCMAPCommodity,rownames=FALSE,extensions = 'FixedColumns',
options = list(sDom = '<"top">lrt<"bottom">ip',
fixedColumns = TRUE,
autowidth = TRUE,
bPaginate = FALSE,
bFilter = FALSE,
bInfo = FALSE,
columnDefs = list(list(width = '20%')),
searching=FALSE,
paging=FALSE)) %>% formatCurrency(2:ncol(DomesticCMAPCommodityFlows.V),digits=0) %>% formatStyle(columns=2:ncol(DomesticCMAPCommodityFlows.V),backgroundColor=styleInterval(sort(unlist(DomesticCMAPCommodityFlows.V[,2:ncol(DomesticCMAPCommodityFlows.V)]))[-1],createCSSColors(sort(unlist(DomesticCMAPCommodityFlows.V[,2:ncol(DomesticCMAPCommodityFlows.V)])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")
```
### Ton-miles
```{r,echo=FALSE}
datatable(DomesticCMAPCommodityFlows.TM,container=sketchDomesticCMAPCommodity,rownames=FALSE,extensions = 'FixedColumns',
options = list(sDom = '<"top">lrt<"bottom">ip',
fixedColumns = TRUE,
autowidth = TRUE,
bPaginate = FALSE,
bFilter = FALSE,
bInfo = FALSE,
columnDefs = list(list(width = '20%')),
searching=FALSE,
paging=FALSE)) %>% formatCurrency(2:ncol(DomesticCMAPCommodityFlows.TM),currency="",digits=0) %>% formatStyle(columns=2:ncol(DomesticCMAPCommodityFlows.TM),backgroundColor=styleInterval(sort(unlist(DomesticCMAPCommodityFlows.TM[,2:ncol(DomesticCMAPCommodityFlows.TM)]))[-1],createCSSColors(sort(unlist(DomesticCMAPCommodityFlows.TM[,2:ncol(DomesticCMAPCommodityFlows.TM)])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")
```
Total Flow Chart {data-navmenu="CMAP" data-width=600}
============================================
Domestic Bar Charts
-----------------------------------
### Domestic Flows Tonnage
```{r comparisonPlotDomesticTonnage, echo=FALSE}
p <- DomesticCMAPFlows %>% ggplot(aes(x=Mode.Domestic,y=Tonnage,fill=Table))+geom_bar(stat = "identity",position = "dodge")+labs(x="Mode",y="Tonnage")+facet_grid(Move.Type~.,scales = "free_y",switch = "y")+theme_db+scale_y_continuous(position = "right")+scale_fill_manual("",values=dataColor)
ggplotly(p)
```
### Domestic Flows Value
```{r comparisonPlotDomesticValue, echo=FALSE}
p <- DomesticCMAPFlows %>% ggplot(aes(x=Mode.Domestic,y=Value,fill=Table))+geom_bar(stat = "identity",position = "dodge")+labs(x="Mode",y="Value")+facet_grid(Move.Type~.,scales = "free_y",switch = "y")+theme_db+scale_y_continuous(position = "right")+scale_fill_manual("",values=dataColor)
ggplotly(p)
```
### Domestic Flows Ton-miles
```{r comparisonPlotDomesticTonmiles, echo=FALSE}
p <- DomesticCMAPFlows %>% ggplot(aes(x=Mode.Domestic,y=Tonmiles,fill=Table))+geom_bar(stat = "identity",position = "dodge")+labs(x="Mode",y="Ton-miles")+facet_grid(Move.Type~.,scales = "free_y",switch = "y")+theme_db+scale_y_continuous(position = "right")+scale_fill_manual("",values=dataColor)
ggplotly(p)
```
National Bar Charts
-----------------------------------
### International Flows Tonnage
```{r comparisonPlotInternationalDomesticTonnage, echo=FALSE}
ImpExpDomesticCMAPFlows <- CMAPFlows[Trade.Type!="Domestic",.(Tonnage=comma(sum(Tons)/1000,digits=0),Tonmiles=comma(sum(Tonmiles)/1000000,digits = 0),Value=comma(sum(Value)/1000000,digits = 0)),by=.(Move.Type,Mode.Domestic,Mode.Foreign)][order(Move.Type,-Tonnage)]
p <- ImpExpDomesticCMAPFlows %>% ggplot(aes(x=Mode.Domestic,y=Tonnage,fill=Mode.Foreign))+geom_bar(stat = "identity")+labs(x="Domestic Mode",y="Tonnage")+facet_grid(Move.Type~.,scales = "free_y",switch = "y")+theme_db+guides(fill=guide_legend("Foreign Mode"))+scale_fill_manual(values = modeColors2)+scale_y_continuous(position = "right")
ggplotly(p)
```
### International Flows Value
```{r comparisonPlotInternationalDomesticValue, echo=FALSE}
p <- ImpExpDomesticCMAPFlows %>% ggplot(aes(x=Mode.Domestic,y=Value,fill=Mode.Foreign))+geom_bar(stat = "identity")+labs(x="Domestic Mode",y="Value")+facet_grid(Move.Type~.,scales = "free_y",switch = "y")+theme_db+guides(fill=guide_legend("Foreign Mode"))+scale_fill_manual(values = modeColors2)+scale_y_continuous(position = "right")
ggplotly(p)
```
### International Flows Ton-miles
```{r comparisonPlotInternationalDomesticTonmiles, echo=FALSE}
p <- ImpExpDomesticCMAPFlows %>% ggplot(aes(x=Mode.Domestic,y=Tonmiles,fill=Mode.Foreign))+geom_bar(stat = "identity")+labs(x="Domestic Mode",y="Ton-miles")+facet_grid(Move.Type~.,scales = "free_y",switch = "y")+theme_db+guides(fill=guide_legend("Foreign Mode"))+scale_fill_manual(values = modeColors2)+scale_y_continuous(position = "right")
ggplotly(p)
```
Commodity Flow Charts {data-navmenu="CMAP" .tabset .tabset-fade}
===================================================================
Domestic Commodity Flow Tonnage {.tabset .tabset-fade}
----------------------------------------------------------------
### Tonnage In
```{r,echo=FALSE, include=FALSE}
# DomesticCMAPCommodityFlows <- CMAPFlows[Trade.Type=="Domestic",.(Tonnage=comma(sum(Tons)/1000,digits=0),Tonmiles=comma(sum(Tonmiles)/1000000,digits = 0),Value=comma(sum(Value)/1000000,digits = 0)),by=.(SCTG,Mode.Domestic,Move.Type)][order(SCTG,Move.Type,Mode.Domestic)]
latestSCTGCodes <- SCTGCodes[Version==getLatestFAFVersion()]
latestSCTGCodes[,Version:=NULL]
setkey(latestSCTGCodes,SCTG)
DomesticCMAPCommodityFlows <- merge(DomesticCMAPCommodityFlows,latestSCTGCodes,by="SCTG",all.x=TRUE,all.y=FALSE)
DomesticCMAPCommodityFlows[,SCTGLabels:=paste(SCTG,Label)]
```
```{r,echo=FALSE,fig.height=9}
p <- DomesticCMAPCommodityFlows[Move.Type=="In"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x))))+geom_bar(aes(y=Tonnage,fill=Table),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Tonnage",x="Commodity")+guides(fill=guide_legend("Table"))+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
### Value In
```{r,echo=FALSE,fig.height=9}
p <- DomesticCMAPCommodityFlows[Move.Type=="In"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x))))+geom_bar(aes(y=Value,fill=Table),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Value",x="Commodity")+guides(fill=guide_legend("Table"))+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
### Ton-miles In
```{r,echo=FALSE,fig.height=9}
p <- DomesticCMAPCommodityFlows[Move.Type=="In"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x))))+geom_bar(aes(y=Tonmiles,fill=Table),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Ton-miles",x="Commodity")+guides(fill=guide_legend("Table"))+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
Domestic Commodity Flow Value {.tabset .tabset-fade}
----------------------------------------------------------------
### Tonnage Out
```{r,echo=FALSE,fig.height=9}
p <- DomesticCMAPCommodityFlows[Move.Type=="Out"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x))))+geom_bar(aes(y=Tonnage,fill=Table),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Tonnage",x="Commodity")+guides(fill=guide_legend("Table"))+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
### Value Out
```{r,echo=FALSE,fig.height=9}
p <- DomesticCMAPCommodityFlows[Move.Type=="Out"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x))))+geom_bar(aes(y=Value,fill=Table),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Value",x="Commodity")+guides(fill=guide_legend("Table"))+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
### Ton-miles Out
```{r,echo=FALSE,fig.height=9}
p <- DomesticCMAPCommodityFlows[Move.Type=="Out"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x))))+geom_bar(aes(y=Tonmiles,fill=Table),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Ton-miles",x="Commodity")+guides(fill=guide_legend("Table"))+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
Domestic Commodity Flow Tonmiles {.tabset .tabset-fade}
----------------------------------------------------------------
### Tonnage Within
```{r,echo=FALSE,fig.height=9}
p <- DomesticCMAPCommodityFlows[Move.Type=="Within"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x))))+geom_bar(aes(y=Value,fill=Table),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Tonnage",x="Commodity")+guides(fill=guide_legend("Table"))+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
### Value Within
```{r,echo=FALSE,fig.height=9}
p <- DomesticCMAPCommodityFlows[Move.Type=="Within"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x))))+geom_bar(aes(y=Value,fill=Table),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Value",x="Commodity")+guides(fill=guide_legend("Table"))+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
### Ton-miles Within
```{r,echo=FALSE,fig.height=9}
p <- DomesticCMAPCommodityFlows[Move.Type=="Within"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x))))+geom_bar(aes(y=Tonmiles,fill=Table),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Ton-miles",x="Commodity")+guides(fill=guide_legend("Table"))+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
Regional Flow Chart {data-navmenu="CMAP"}
================================================
Flows {data-height=550 .tabset .tabset-fade}
----------------------------
### Tonnage
```{r,echo=FALSE,fig.height=9}
DomesticCMAPRegionFlows <- CMAPFlows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012"),by=.(Origin.Region,Destination.Region,Mode.Domestic)]
ModelDomesticCMAPRegionFlows <- ModelCMAPFlows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="Model"),by=.(Origin.Region,Destination.Region,Mode.Domestic)]
DomesticCMAPRegionFlows <- rbind(DomesticCMAPRegionFlows,ModelDomesticCMAPRegionFlows)
rm(ModelDomesticCMAPRegionFlows)
p <- DomesticCMAPRegionFlows[!is.na(Origin.Region)&!is.na(Destination.Region)] %>% ggplot(aes(x=Mode.Domestic,y=Tonnage))+geom_bar(aes(fill=Table),stat="identity",position="dodge")+facet_wrap(~Origin.Region+Destination.Region,nrow = 2,scales = "free_y")+theme_db+scale_fill_manual(values=makeMoreColors(2))+labs(x="Domestic Mode",y="Tonnage")
ggplotly(p)
```
### Value
```{r,echo=FALSE,fig.height=9}
p <- DomesticCMAPRegionFlows[!is.na(Origin.Region)&!is.na(Destination.Region)] %>% ggplot(aes(x=Mode.Domestic,y=Value))+geom_bar(aes(fill=Table),stat="identity",position="dodge")+facet_grid(Origin.Region~Destination.Region,scales = "free_y")+theme_db+scale_fill_manual(values=makeMoreColors(2))+labs(x="Domestic Mode",y="Value")
ggplotly(p)
```
### Ton-miles
```{r,echo=FALSE,fig.height=9}
p <- DomesticCMAPRegionFlows[!is.na(Origin.Region)&!is.na(Destination.Region)] %>% ggplot(aes(x=Mode.Domestic,y=Tonmiles))+geom_bar(aes(fill=Table),stat="identity",position="dodge")+facet_grid(Origin.Region~Destination.Region,scales = "free_y")+theme_db+scale_fill_manual(values=makeMoreColors(2))+labs(x="Domestic Mode",y="Ton-miles")
ggplotly(p)
```
Tables {data-navmenu="National"}
==================================================
### Summary Tables
```{r createTablesNational, echo=FALSE}
DomesticFlows <- Flows[Trade.Type=="Domestic",.(Tonnage=comma(sum(Tons)/1000,digits=0),Tonmiles=comma(sum(Tonmiles)/1000000,digits = 0),Value=comma(sum(Value)/1000000,digits = 0),Table="FAF 2012"),by=.(Move.Type,Mode.Domestic)][order(Move.Type,-Tonnage)]
ModelDomesticFlows <- ModelFlows[Trade.Type=="Domestic",.(Tonnage=comma(sum(Tons)/1000,digits=0),Tonmiles=comma(sum(Tonmiles)/1000000,digits = 0),Value=comma(sum(Value)/1000000,digits = 0),Table="Model"),by=.(Move.Type,Mode.Domestic)][order(Move.Type,-Tonnage)]
DomesticFlows <- rbind(DomesticFlows,ModelDomesticFlows)
rm(ModelDomesticFlows)
DomesticFlows.T <- dcast(DomesticFlows,Mode.Domestic~Move.Type+Table,value.var = "Tonnage")
DomesticFlows.V <- dcast(DomesticFlows,Mode.Domestic~Move.Type+Table,value.var = "Value")
DomesticFlows.TM <- dcast(DomesticFlows,Mode.Domestic~Move.Type+Table,value.var = "Tonmiles")
ImpExpDomesticFlows <-Flows[Trade.Type!="Domestic",.(Tonnage=comma(sum(Tons)/1000,digits=0),Tonmiles=comma(sum(Tonmiles)/1000000,digits = 0),Value=comma(sum(Value)/1000000,digits = 0),Table="FAF 2012"),by=.(Trade.Type,Move.Type,Mode.Domestic)][order(Trade.Type,Move.Type,-Tonnage)]
ImpExpDomesticFlows.T <- dcast(ImpExpDomesticFlows,Mode.Domestic~Trade.Type+Move.Type+Table,value.var="Tonnage")
ImpExpDomesticFlows.V <- dcast(ImpExpDomesticFlows,Mode.Domestic~Trade.Type+Move.Type+Table,value.var="Value")
ImpExpDomesticFlows.TM <- dcast(ImpExpDomesticFlows,Mode.Domestic~Trade.Type+Move.Type+Table,value.var="Tonmiles")
ImpExpInternationalFlows <- Flows[Trade.Type!="Domestic",.(Tonnage=comma(sum(Tons)/1000,digits=0),Tonmiles=comma(sum(Tonmiles)/1000000,digits = 0),Value=comma(sum(Value)/1000000,digits = 0),Table="FAF 2012"),by=.(Trade.Type,Move.Type,Mode.Foreign)][order(Trade.Type,Move.Type,-Tonnage)]
ImpExpInternationalFlows.T <- dcast(ImpExpInternationalFlows,Mode.Foreign~Trade.Type+Move.Type+Table,value.var="Tonnage")
ImpExpInternationalFlows.V <- dcast(ImpExpInternationalFlows,Mode.Foreign~Trade.Type+Move.Type+Table,value.var="Value")
ImpExpInternationalFlows.TM <- dcast(ImpExpInternationalFlows,Mode.Foreign~Trade.Type+Move.Type+Table,value.var="Tonmiles")
TotalFlowsNational.T <- merge(merge(DomesticFlows.T,ImpExpDomesticFlows.T,by="Mode.Domestic"),ImpExpInternationalFlows.T,by.x="Mode.Domestic",by.y="Mode.Foreign")
TotalFlowsNational.V <- merge(merge(DomesticFlows.V,ImpExpDomesticFlows.V,by="Mode.Domestic"),ImpExpInternationalFlows.V,by.x="Mode.Domestic",by.y="Mode.Foreign")
TotalFlowsNational.TM <- merge(merge(DomesticFlows.TM,ImpExpDomesticFlows.TM,by="Mode.Domestic"),ImpExpInternationalFlows.TM,by.x="Mode.Domestic",by.y="Mode.Foreign")
countDomestic <- DomesticFlows[,.N,by=.(Move.Type,Table)]
countInternationalDomestic <- ImpExpDomesticFlows[,.N,by=.(Move.Type,Trade.Type,Table)]
countInternationalInternational <- ImpExpInternationalFlows[,.N,by=.(Move.Type,Trade.Type,Table)]
sketchNational <- with(tags,table(
thead(
tr(
th(colspan=1,rowspan=4,"Mode"),
th(colspan=countDomestic[,.N],rowspan=2, "Domesitc"),
th(colspan=countInternationalDomestic[,.N], "Domestic"),
th(colspan=countInternationalInternational[,.N], "International")
),
tr(
th(colspan=countInternationalDomestic[Trade.Type=="Import",.N], "Import"),
th(colspan=countInternationalDomestic[Trade.Type=="Export",.N], "Export"),
th(colspan=countInternationalInternational[Trade.Type=="Import",.N], "Import"),
th(colspan=countInternationalInternational[Trade.Type=="Export",.N], "Export")
),
tr(
if((value <- countDomestic[Move.Type=="Within Zones",.N])>0) th(colspan=value, "Within Zones"),
if((value <- countDomestic[Move.Type=="Between Zones",.N])>0) th(colspan=value, "Between Zones"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="Within Zones",.N])>0) th(colspan=value, "Within Zones"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="Between Zones",.N])>0) th(colspan=value, "Between Zones"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="Within Zones",.N])>0) th(colspan=value, "Within Zones"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="Between Zones",.N])>0) th(colspan=value, "Between Zones"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="Within Zones",.N])>0) th(colspan=value, "Within Zones"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="Between Zones",.N])>0) th(colspan=value, "Between Zones"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="Within Zones",.N])>0) th(colspan=value, "Within Zones"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="Between Zones",.N])>0) th(colspan=value, "Between Zones")
),
tr(
if((value <- countDomestic[Move.Type=="Within Zones" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countDomestic[Move.Type=="Within Zones" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countDomestic[Move.Type=="Between Zones" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countDomestic[Move.Type=="Between Zones" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="Within Zones" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="Within Zones" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="Between Zones" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalDomestic[Trade.Type=="Import" & Move.Type=="Between Zones" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="Within Zones" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="Within Zones" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="Between Zones" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalDomestic[Trade.Type=="Export" & Move.Type=="Between Zones" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="Within Zones" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="Within Zones" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="Between Zones" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalInternational[Trade.Type=="Import" & Move.Type=="Between Zones" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="Within Zones" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="Within Zones" & Table=="Model",.N])>0) th(colspan=value, "Model"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="Between Zones" & Table=="FAF 2012",.N])>0) th(colspan=value, "FAF 2012"),
if((value <- countInternationalInternational[Trade.Type=="Export" & Move.Type=="Between Zones" & Table=="Model",.N])>0) th(colspan=value, "Model")
)
)))
datatable(TotalFlowsNational.T,container=sketchNational,rownames=FALSE,extensions = 'FixedColumns',
options = list(sDom = '<"top">lrt<"bottom">ip',
fixedColumns = TRUE,
autowidth = TRUE,
bPaginate = FALSE,
bFilter = FALSE,
bInfo = FALSE,
columnDefs = list(list(width = '20%')),
searching=FALSE,
paging=FALSE)) %>% formatCurrency(2:ncol(TotalFlowsNational.T),currency="",digits=0) %>% formatStyle(columns=2:ncol(TotalFlowsNational.T),backgroundColor=styleInterval(sort(unlist(TotalFlowsNational.T[,2:ncol(TotalFlowsNational.T)]))[-1],createCSSColors(sort(unlist(TotalFlowsNational.T[,2:ncol(TotalFlowsNational.T)])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center") #%>% formatStyle(columns=4:7,backgroundColor=styleInterval(sort(unlist(TotalFlowsNational.T[,4:7]))[-1],createCSSColors(sort(unlist(TotalFlowsNational.T[,4:7])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center") %>% formatStyle(columns=8:11,backgroundColor=styleInterval(sort(unlist(TotalFlowsNational.T[,8:11]))[-1],createCSSColors(sort(unlist(TotalFlowsNational.T[,8:11])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")
```
### Value
```{r,echo=FALSE}
datatable(TotalFlowsNational.V,container=sketchNational,rownames=FALSE,extensions = 'FixedColumns',
options = list(sDom = '<"top">lrt<"bottom">ip',
fixedColumns = TRUE,
autowidth = TRUE,
bPaginate = FALSE,
bFilter = FALSE,
bInfo = FALSE,
columnDefs = list(list(width = '20%')),
searching=FALSE,
paging=FALSE)) %>% formatCurrency(2:ncol(TotalFlowsNational.V),digits=0) %>% formatStyle(columns=2:ncol(TotalFlowsNational.V),backgroundColor=styleInterval(sort(unlist(TotalFlowsNational.V[,2:ncol(TotalFlowsNational.V)]))[-1],createCSSColors(sort(unlist(TotalFlowsNational.V[,2:ncol(TotalFlowsNational.V)])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center") #%>% formatStyle(columns=4:7,backgroundColor=styleInterval(sort(unlist(TotalFlowsNational.V[,4:7]))[-1],createCSSColors(sort(unlist(TotalFlowsNational.V[,4:7])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center") %>% formatStyle(columns=8:11,backgroundColor=styleInterval(sort(unlist(TotalFlowsNational.V[,8:11]))[-1],createCSSColors(sort(unlist(TotalFlowsNational.V[,8:11])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")
```
### Tonmiles
```{r,echo=FALSE}
datatable(TotalFlowsNational.TM,container=sketchNational,rownames=FALSE,extensions = 'FixedColumns',
options = list(sDom = '<"top">lrt<"bottom">ip',
fixedColumns = TRUE,
autowidth = TRUE,
bPaginate = FALSE,
bFilter = FALSE,
bInfo = FALSE,
columnDefs = list(list(width = '20%')),
searching=FALSE,
paging=FALSE)) %>% formatCurrency(2:ncol(TotalFlowsNational.TM),currency="",digits=0) %>% formatStyle(columns=2:ncol(TotalFlowsNational.TM),backgroundColor=styleInterval(sort(unlist(TotalFlowsNational.TM[,2:ncol(TotalFlowsNational.TM)]))[-1],createCSSColors(sort(unlist(TotalFlowsNational.TM[,2:ncol(TotalFlowsNational.TM)])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center") #%>% formatStyle(columns=4:7,backgroundColor=styleInterval(sort(unlist(TotalFlowsNational.TM[,4:7]))[-1],createCSSColors(sort(unlist(TotalFlowsNational.TM[,4:7])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center") %>% formatStyle(columns=8:11,backgroundColor=styleInterval(sort(unlist(TotalFlowsNational.TM[,8:11]))[-1],createCSSColors(sort(unlist(TotalFlowsNational.TM[,8:11])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")
```
Tables by Commodity {data-navmenu="National" data-orientation=rows}
===============================================
Tonnage Table {data-height=1600 .tabset .tabset-fade}
-------------------------------------------------
### Tonnage
```{r createTablesCommodity, echo=FALSE}
# Domestic Portion
DomesticCommodityFlows <- Flows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012"),by=.(Move.Type,Mode.Domestic,SCTG)][order(Move.Type,-Tonnage)]
DomesticCommodityFlowsTotal <- Flows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Move.Type="Total",Table="FAF 2012"),by=.(Mode.Domestic,SCTG)][order(Move.Type,-Tonnage)]
DomesticCommodityFlows <- rbind(DomesticCommodityFlows,DomesticCommodityFlowsTotal)
rm(DomesticCommodityFlowsTotal)
ModelDomesticCommodityFlows <- ModelFlows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="Model"),by=.(Move.Type,Mode.Domestic,Commodity_SCTG)][order(Move.Type,-Tonnage)]
ModelDomesticCommodityFlowsTotal <- ModelFlows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Move.Type="Total",Table="Model"),by=.(Mode.Domestic,Commodity_SCTG)][order(Move.Type,-Tonnage)]
ModelDomesticCommodityFlows <- rbind(ModelDomesticCommodityFlows,ModelDomesticCommodityFlowsTotal)
rm(ModelDomesticCommodityFlowsTotal)
setnames(ModelDomesticCommodityFlows,old="Commodity_SCTG",new="SCTG")
DomesticCommodityFlows <- rbind(DomesticCommodityFlows,ModelDomesticCommodityFlows)
rm(ModelDomesticCommodityFlows)
DomesticCommodityFlows <- DomesticCommodityFlows[,Move.Type:=relevel(factor(Move.Type),ref="Within Zones")] # To reorder dcast output
DomesticCommodityFlows.T <- dcast(DomesticCommodityFlows[Move.Type!="Total"],SCTG~Mode.Domestic+Move.Type+Table,value.var = "Tonnage")
DomesticCommodityFlows.V <- dcast(DomesticCommodityFlows[Move.Type!="Total"],SCTG~Mode.Domestic+Move.Type+Table,value.var = "Value")
DomesticCommodityFlows.TM <- dcast(DomesticCommodityFlows[Move.Type!="Total"],SCTG~Mode.Domestic+Move.Type+Table,value.var = "Tonmiles")
# Domestic Portion of International Trade
ImpExpDomesticCommodityFlows <- Flows[Trade.Type!="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012"),by=.(Trade.Type,Move.Type,Mode.Domestic,SCTG)][order(Trade.Type,Move.Type,-Tonnage)]
ImpExpDomesticCommodityFlowsTotal <- Flows[Trade.Type!="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012",Move.Type="Total"),by=.(Trade.Type,Mode.Domestic,SCTG)][order(Trade.Type,Move.Type,-Tonnage)]
ImpExpDomesticCommodityFlows <- rbind(ImpExpDomesticCommodityFlows,ImpExpDomesticCommodityFlowsTotal)
rm(ImpExpDomesticCommodityFlowsTotal)
ImpExpDomesticCommodityFlows <- ImpExpDomesticCommodityFlows[,Move.Type:=relevel(factor(Move.Type),ref="Within Zones")] # To reorder dcast output
ImpExpDomesticCommodityFlows.T <- dcast(ImpExpDomesticCommodityFlows[Move.Type!="Total"],SCTG~Mode.Domestic+Trade.Type+Move.Type+Table,value.var = "Tonnage")
ImpExpDomesticCommodityFlows.V <- dcast(ImpExpDomesticCommodityFlows[Move.Type!="Total"],SCTG~Mode.Domestic+Trade.Type+Move.Type+Table,value.var = "Value")
ImpExpDomesticCommodityFlows.TM <- dcast(ImpExpDomesticCommodityFlows[Move.Type!="Total"],SCTG~Mode.Domestic+Trade.Type+Move.Type+Table,value.var = "Tonmiles")
# Foreign portion of International Trade
ImpExpInternationalCommodityFlows <- Flows[Trade.Type!="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012"),by=.(Trade.Type,Move.Type,Mode.Foreign,SCTG)][order(Trade.Type,Move.Type,-Tonnage)]
ImpExpInternationalCommodityFlowsTotal <- Flows[Trade.Type!="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012",Move.Type="Total"),by=.(Trade.Type,Mode.Foreign,SCTG)][order(Trade.Type,Move.Type,-Tonnage)]
ImpExpInternationalCommodityFlows <- rbind(ImpExpInternationalCommodityFlows,ImpExpInternationalCommodityFlowsTotal)
rm(ImpExpInternationalCommodityFlowsTotal)
ImpExpInternationalCommodityFlows <- ImpExpInternationalCommodityFlows[,Move.Type:=relevel(factor(Move.Type),ref="Within Zones")] # To reorder dcast output
ImpExpInternationalCommodityFlows.T <- dcast(ImpExpInternationalCommodityFlows[Move.Type!="Total"],SCTG~Mode.Foreign+Trade.Type+Move.Type+Table,value.var = "Tonnage")
ImpExpInternationalCommodityFlows.V <- dcast(ImpExpInternationalCommodityFlows[Move.Type!="Total"],SCTG~Mode.Foreign+Trade.Type+Move.Type+Table,value.var = "Value")
ImpExpInternationalCommodityFlows.TM <- dcast(ImpExpInternationalCommodityFlows[Move.Type!="Total"],SCTG~Mode.Foreign+Trade.Type+Move.Type+Table,value.var = "Tonmiles")
countMode <- DomesticCommodityFlows[Move.Type!="Total",.N,by=.(Mode.Domestic,Move.Type,Table)]
sketchDomesticCommodity <- with(tags,table(
thead(
tr(
th(colspan=1,rowspan=3,"SCTG"),
if((value <- countMode[Mode.Domestic=="Truck",.N])>0) th(colspan=value ,"Truck"),
if((value <- countMode[Mode.Domestic=="Rail",.N])>0)th(colspan=value ,"Rail"),
if((value <- countMode[Mode.Domestic=="Water",.N])>0)th(colspan=value ,"Water"),
if((value <- countMode[Mode.Domestic=="Air",.N])>0)th(colspan= value,"Air"),
if((value <- countMode[Mode.Domestic=="Multiple",.N])>0)th(colspan= value,"Multiple"),
if((value <- countMode[Mode.Domestic=="Pipeline",.N])>0)th(colspan= value,"Pipeline"),
if((value <- countMode[Mode.Domestic=="Other",.N])>0)th(colspan=value ,"Other"),
if((value <- countMode[Mode.Domestic=="None",.N])>0)th(colspan=value ,"None")
),
tr(
if((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="Within Zones",.N])>0)th(colspan=value,"Within Zones"),
if((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="Between Zones",.N])>0)th(colspan=value,"Between Zones"),
if((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="Within Zones",.N])>0)th(colspan=value,"Within Zones"),
if((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="Between Zones",.N])>0)th(colspan=value,"Between Zones"),
if((value <- countMode[Mode.Domestic=="Water"&Move.Type=="Within Zones",.N])>0)th(colspan=value,"Within Zones"),
if((value <- countMode[Mode.Domestic=="Water"&Move.Type=="Between Zones",.N])>0)th(colspan=value,"Between Zones"),
if((value <- countMode[Mode.Domestic=="Air"&Move.Type=="Within Zones",.N])>0)th(colspan=value,"Within Zones"),
if((value <- countMode[Mode.Domestic=="Air"&Move.Type=="Between Zones",.N])>0)th(colspan=value,"Between Zones"),
if((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="Within Zones",.N])>0)th(colspan = value,"Within Zones"),
if((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="Between Zones",.N])>0)th(colspan = value,"Between Zones"),
if((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="Within Zones",.N])>0)th(colspan = value,"Within Zones"),
if((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="Between Zones",.N])>0)th(colspan = value,"Between Zones"),
if((value <- countMode[Mode.Domestic=="Other"&Move.Type=="Within Zones",.N])>0)th(colspan = value,"Within Zones"),
if((value <- countMode[Mode.Domestic=="Other"&Move.Type=="Between Zones",.N])>0)th(colspan = value,"Between Zones"),
if((value <- countMode[Mode.Domestic=="None"&Move.Type=="Within Zones",.N])>0)th(colspan = value,"Within Zones"),
if((value <- countMode[Mode.Domestic=="None"&Move.Type=="Between Zones",.N])>0)th(colspan = value,"Between Zones")
),
tr(
if((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="Within Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="Within Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="Between Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Truck"&Move.Type=="Between Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="Within Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="Within Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="Between Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Rail"&Move.Type=="Between Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Water"&Move.Type=="Within Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Water"&Move.Type=="Within Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Water"&Move.Type=="Between Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Water"&Move.Type=="Between Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Air"&Move.Type=="Within Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Air"&Move.Type=="Within Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Air"&Move.Type=="Between Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Air"&Move.Type=="Between Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="Within Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="Within Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="Between Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Multiple"&Move.Type=="Between Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="Within Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="Within Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="Between Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Pipeline"&Move.Type=="Between Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Other"&Move.Type=="Within Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Other"&Move.Type=="Within Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="Other"&Move.Type=="Between Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="Other"&Move.Type=="Between Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="None"&Move.Type=="Within Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="None"&Move.Type=="Within Zones"&Table=="Model",.N])>0)th(colspan = value,"Model"),
if((value <- countMode[Mode.Domestic=="None"&Move.Type=="Between Zones"&Table=="FAF 2012",.N])>0)th(colspan = value,"FAF 2012"),
if((value <- countMode[Mode.Domestic=="None"&Move.Type=="Between Zones"&Table=="Model",.N])>0)th(colspan = value,"Model")
)
)))
datatable(DomesticCommodityFlows.T,container=sketchDomesticCommodity,rownames=FALSE,extensions = 'FixedColumns',
options = list(sDom = '<"top">lrt<"bottom">ip',
fixedColumns = TRUE,
autowidth = TRUE,
bPaginate = FALSE,
bFilter = FALSE,
bInfo = FALSE,
columnDefs = list(list(width = '20%')),
searching=FALSE,
paging=FALSE)) %>% formatCurrency(2:ncol(DomesticCommodityFlows.T),currency="",digits=0) %>% formatStyle(columns=2:ncol(DomesticCommodityFlows.T),backgroundColor=styleInterval(sort(unlist(DomesticCommodityFlows.T[,2:ncol(DomesticCommodityFlows.T)]))[-1],createCSSColors(sort(unlist(DomesticCommodityFlows.T[,2:ncol(DomesticCommodityFlows.T)])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")
```
### Value
```{r, echo=FALSE}
datatable(DomesticCommodityFlows.V,container=sketchDomesticCommodity,rownames=FALSE,extensions = 'FixedColumns',
options = list(sDom = '<"top">lrt<"bottom">ip',
fixedColumns = TRUE,
autowidth = TRUE,
bPaginate = FALSE,
bFilter = FALSE,
bInfo = FALSE,
columnDefs = list(list(width = '20%')),
searching=FALSE,
paging=FALSE)) %>% formatCurrency(2:ncol(DomesticCommodityFlows.V),digits=0) %>% formatStyle(columns=2:ncol(DomesticCommodityFlows.V),backgroundColor=styleInterval(sort(unlist(DomesticCommodityFlows.V[,2:ncol(DomesticCommodityFlows.V)]))[-1],createCSSColors(sort(unlist(DomesticCommodityFlows.V[,2:ncol(DomesticCommodityFlows.V)])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")
```
### Ton-miles
```{r,echo=FALSE}
datatable(DomesticCommodityFlows.TM,container=sketchDomesticCommodity,rownames=FALSE,extensions = 'FixedColumns',
options = list(sDom = '<"top">lrt<"bottom">ip',
fixedColumns = TRUE,
autowidth = TRUE,
bPaginate = FALSE,
bFilter = FALSE,
bInfo = FALSE,
columnDefs = list(list(width = '20%')),
searching=FALSE,
paging=FALSE)) %>% formatCurrency(2:ncol(DomesticCommodityFlows.TM),currency="",digits=0) %>% formatStyle(columns=2:ncol(DomesticCommodityFlows.TM),backgroundColor=styleInterval(sort(unlist(DomesticCommodityFlows.TM[,2:ncol(DomesticCommodityFlows.TM)]))[-1],createCSSColors(sort(unlist(DomesticCommodityFlows.TM[,2:ncol(DomesticCommodityFlows.TM)])),"white","orange")),backgroundSize="90% 80%",backgroundRepeat="no-repeat",backgroundPosition="center")
```
Total Flow Chart {data-navmenu="National"}
==================================
Domestic Flows
------------------------
### Domestic Flows Tonnage
```{r comparisonPlotNationalTonnage, echo=FALSE}
# DomestiFlows <- Flows[Trade.Type=="Domestic",.(Tonnage=comma(sum(Tons)/1000,digits=0),Tonmiles=comma(sum(Tonmiles)/1000000,digits = 0),Value=comma(sum(Value)/1000000,digits = 0)),by=.(Move.Type,Mode.Domestic)][order(Move.Type,-Tonnage)]
p <- DomesticFlows %>% ggplot(aes(x=Mode.Domestic,y=Tonnage,fill=Table))+geom_bar(stat = "identity")+labs(x="Mode",y="Tonnage")+facet_grid(Move.Type~.,scales = "free_y",switch = "y")+theme_db+scale_y_continuous(position = "right")+scale_fill_manual(values=makeMoreColors(2))
ggplotly(p)
```
### Domestic Flows Value
```{r comparisonPlotNationalValue, echo=FALSE}
p <- DomesticFlows %>% ggplot(aes(x=Mode.Domestic,y=Value,fill=Table))+geom_bar(stat = "identity")+labs(x="Mode",y="Value")+facet_grid(Move.Type~.,scales = "free_y",switch = "y")+theme_db+scale_y_continuous(position = "right")+scale_fill_manual(values=makeMoreColors(2))
ggplotly(p)
```
### Domestic Flows Ton-miles
```{r comparisonPlotNationalTonmiles, echo=FALSE}
p <- DomesticFlows %>% ggplot(aes(x=Mode.Domestic,y=Tonmiles,fill=Table))+geom_bar(stat = "identity")+labs(x="Mode",y="Ton-miles")+facet_grid(Move.Type~.,scales = "free_y",switch = "y")+theme_db+scale_y_continuous(position = "right")+scale_fill_manual(values=makeMoreColors(2))
ggplotly(p)
```
International Flows
--------------------------
### International Flows Tonnage
```{r comparisonPlotNationalDomesticTonnage, echo=FALSE}
ImpExpDomesticFlows <- Flows[Trade.Type!="Domestic",.(Tonnage=comma(sum(Tons)/1000,digits=0),Tonmiles=comma(sum(Tonmiles)/1000000,digits = 0),Value=comma(sum(Value)/1000000,digits = 0)),by=.(Move.Type,Mode.Domestic,Mode.Foreign)][order(Move.Type,-Tonnage)]
p <- ImpExpDomesticFlows %>% ggplot(aes(x=Mode.Domestic,y=Tonnage,fill=Mode.Foreign))+geom_bar(stat = "sum")+labs(x="Mode",y="Tonnage")+facet_grid(Move.Type~.,scales = "free_y",switch = "y")+theme_db+scale_y_continuous(position = "right")+guides(fill=guide_legend("Foreign Mode"))+scale_fill_manual(values=modeColors2)
ggplotly(p)
```
### International Flows Value
```{r comparisonPlotNationalDomesticValue, echo=FALSE}
p <- ImpExpDomesticFlows %>% ggplot(aes(x=Mode.Domestic,y=Value,fill=Mode.Foreign))+geom_bar(stat = "sum")+labs(x="Mode",y="Value")+facet_grid(Move.Type~.,scales = "free_y",switch = "y")+theme_db+scale_y_continuous(position = "right")+guides(fill=guide_legend("Foreign Mode"))+scale_fill_manual(values=modeColors2)
ggplotly(p)
```
### International Flows Ton-miles
```{r comparisonPlotNationalDomesticTonmiles, echo=FALSE}
p <- ImpExpDomesticFlows %>% ggplot(aes(x=Mode.Domestic,y=Tonmiles,fill=Mode.Foreign))+geom_bar(stat = "sum")+labs(x="Mode",y="Ton-miles")+facet_grid(Move.Type~.,scales = "free_y",switch = "y")+theme_db+scale_y_continuous(position = "right")+guides(fill=guide_legend("Foreign Mode"))+scale_fill_manual(values=modeColors2)
ggplotly(p)
```
Commodity Flow Charts {data-navmenu="National"}
================================================
Domestic Commodity Flow Tonnage {.tabset .tabset-fade}
-------------------------------------------------------------
### Commodity Flows Within Zones
```{r,echo=FALSE, include=FALSE}
# DomesticCommodityFlows <- Flows[Trade.Type=="Domestic",.(Tonnage=comma(sum(Tons)/1000,digits=0),Tonmiles=comma(sum(Tonmiles)/1000000,digits = 0),Value=comma(sum(Value)/1000000,digits = 0)),by=.(SCTG,Mode.Domestic,Move.Type)][order(SCTG,Move.Type,Mode.Domestic)]
DomesticCommodityFlows <- merge(DomesticCommodityFlows,latestSCTGCodes,by="SCTG",all.x=TRUE,all.y=FALSE)
DomesticCommodityFlows[,SCTGLabels:=paste(SCTG,Label)]
```
```{r,echo=FALSE,fig.height=9}
p <- DomesticCommodityFlows[Move.Type=="Within Zones"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x)),fill=Table))+geom_bar(aes(y=Tonnage),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Tonnage",x="Commodity")+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
### Commodity Flows Between Zones
```{r,echo=FALSE,fig.height=9}
p <- DomesticCommodityFlows[Move.Type=="Between Zones"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x)),fill=Table))+geom_bar(aes(y=Tonnage),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Tonnage",x="Commodity")+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
Domestic Commodity Flow Value {.tabset .tabset-fade}
-------------------------------------------------------------
### Commodity Flows Within Zones
```{r,echo=FALSE,fig.height=9}
p <- DomesticCommodityFlows[Move.Type=="Within Zones"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x)),fill=Table))+geom_bar(aes(y=Value),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Value",x="Commodity")+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
### Commodity Flows Between Zones
```{r,echo=FALSE,fig.height=9}
p <- DomesticCommodityFlows[Move.Type=="Between Zones"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x)),fill=Table))+geom_bar(aes(y=Value),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Value",x="Commodity")+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
Domestic Commodity Flow Value {.tabset .tabset-fade}
-------------------------------------------------------------
### Commodity Flows Within Zones
```{r,echo=FALSE,fig.height=9}
p <- DomesticCommodityFlows[Move.Type=="Within Zones"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x)),fill=Table))+geom_bar(aes(y=Tonmiles),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Ton-miles",x="Commodity")+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
### Commodity Flows Between Zones
```{r,echo=FALSE,fig.height=9}
p <- DomesticCommodityFlows[Move.Type=="Between Zones"] %>% ggplot(aes(x=reorder(SCTGLabels,SCTG,function(x) unique(x)),fill=Table))+geom_bar(aes(y=Tonmiles),stat="identity",position="dodge") + scale_fill_manual(values=makeMoreColors(2)) +scale_y_continuous(limits=c(0,NA))+ labs(y="Ton-miles",x="Commodity")+facet_grid(.~Mode.Domestic,scales = "free_x")+theme_db+coord_flip()+theme(axis.text.x=element_text(angle=90))
ggplotly(p)
```
Regional Flow Chart {data-navmenu="National"}
===================================================
Flows {data-height=550 .tabset .tabset-fade}
----------------------------
### Tonnage
```{r,echo=FALSE,fig.height=9}
DomesticRegionFlows <- Flows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="FAF 2012"),by=.(Origin.Region,Destination.Region,Mode.Domestic)]
ModelDomesticRegionFlows <- ModelFlows[Trade.Type=="Domestic",.(Tonnage=sum(Tons)/1000,Tonmiles=sum(Tonmiles)/1000000,Value=sum(Value)/1000000,Table="Model"),by=.(Origin.Region,Destination.Region,Mode.Domestic)]
DomesticRegionFlows <- rbind(DomesticRegionFlows,ModelDomesticRegionFlows)
rm(ModelDomesticRegionFlows)
p <- DomesticRegionFlows[!is.na(Origin.Region)&!is.na(Destination.Region)] %>% ggplot(aes(x=Mode.Domestic,y=Tonnage))+geom_bar(aes(fill=Table),stat="identity",position="dodge")+facet_grid(Origin.Region~Destination.Region,scales = "free_y")+theme_db+scale_fill_manual(values=makeMoreColors(2))+labs(x="Domestic Mode",y="Tonnage")
ggplotly(p)
```
### Value
```{r,echo=FALSE,fig.height=9}
p <- DomesticRegionFlows[!is.na(Origin.Region)&!is.na(Destination.Region)] %>% ggplot(aes(x=Mode.Domestic,y=Value))+geom_bar(aes(fill=Table),stat="identity",position="dodge")+facet_grid(Origin.Region~Destination.Region,scales = "free_y")+theme_db+scale_fill_manual(values=makeMoreColors(2))+labs(x="Domestic Mode",y="Value")
ggplotly(p)
```
### Ton-miles
```{r,echo=FALSE,fig.height=9}
p <- DomesticRegionFlows[!is.na(Origin.Region)&!is.na(Destination.Region)] %>% ggplot(aes(x=Mode.Domestic,y=Tonmiles))+geom_bar(aes(fill=Table),stat="identity",position="dodge")+facet_grid(Origin.Region~Destination.Region,scales = "free_y")+theme_db+scale_fill_manual(values=makeMoreColors(2))+labs(x="Domestic Mode",y="Ton-miles")
ggplotly(p)
```